#include <xen/config.h>
#include <xen/lib.h>
#include <xen/module.h>
-//#include <xen/kernel.h>
#include <xen/sched.h>
-//#include <xen/string.h>
#include <xen/timer.h>
#include <xen/errno.h>
-//#include <xen/in.h>
#include <xen/ioport.h>
#include <xen/slab.h>
#include <xen/interrupt.h>
#include <xen/etherdevice.h>
#include <xen/skbuff.h>
#include <xen/ethtool.h>
-//#include <xen/highmem.h>
+#include <asm/domain_page.h>
#include <asm/irq.h> /* For NR_IRQS only. */
#include <asm/bitops.h>
#include <asm/io.h>
/* netif_wake_queue() will be called at the DMADone interrupt. */
} else {
/* ... and the packet rounded to a doubleword. */
- outsl(ioaddr + TX_FIFO, skb->data, (skb->len + 3) >> 2);
+ char *vdata = map_domain_mem(__pa(skb->data));
+ outsl(ioaddr + TX_FIFO, vdata, (skb->len + 3) >> 2);
+ unmap_domain_mem(vdata);
dev_kfree_skb (skb);
if (inw(ioaddr + TxFree) > 1536) {
netif_start_queue (dev); /* AKPM: redundant? */
;
pci_unmap_single(vp->pdev, dma, pkt_len, PCI_DMA_FROMDEVICE);
} else {
- insl(ioaddr + RX_FIFO, skb_put(skb, pkt_len),
+ char *vdata = map_domain_mem(__pa(skb_put(skb, pkt_len)));
+ insl(ioaddr + RX_FIFO, vdata,
(pkt_len + 3) >> 2);
+ unmap_domain_mem(vdata);
}
outw(RxDiscard, ioaddr + EL3_CMD); /* Pop top Rx packet. */
skb->protocol = eth_type_trans(skb, dev);